package com.snail.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.snail.model.pojo.user.SysUser;
import com.snail.model.vo.user.LoginUser;
import com.snail.model.vo.user.UpdatePasswordVO;
import com.snail.model.vo.user.UserInfoVO;
import com.snail.result.Result;

import java.util.List;


/**
* @author 21116
* @description 针对表【sys_user】的数据库操作Service
* @createDate 2025-08-12 11:59:08
*/
public interface SysUserService extends IService<SysUser> {
    
    /**
     * 用户注册
     *
     * @param user 用户信息
     * @return 是否注册成功
     */
    Result register(SysUser user);
    
    /**
     * 用户登录
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录结果
     */
    Result login(String username, String password);
    
    /**
     * 根据用户ID获取用户信息
     * @param userId 用户ID
     * @return 用户信息
     */
    SysUser getUserById(Long userId);
    
    /**
     * 根据用户ID获取用户信息VO
     * @param userId 用户ID
     * @return 用户信息VO
     */
    UserInfoVO getUserInfoById(Long userId);

    /**
     * 获取当前登录用户信息
     */
    SysUser getUser();

    /**
     * 获取所有用户
     */
    List<SysUser> findAllUsers();

    /**
     * 更新用户信息
     */
    void updateUser(SysUser sysUser);

    /**
     * 修改密码
     */
    void updatePassword(UpdatePasswordVO userVO);

    /**
     * 重置密码
     */
    void resetPassword(Long userId);

    /**
     * 删除用户（逻辑删除）
     */
    void deleteUser(Long userId);

    LoginUser getLoginUserById(Long userId);

    /**
     * 根据邮箱重置密码
     */
    void resetPasswordByEmail(String email, String newPassword);
}